1. Field of the Invention
The present invention relates generally to an improved data processing system. More specifically, the present invention is directed to a computer implemented method, apparatus, and computer usable program code for automatic identification and notification of relevant software defects.
2. Description of the Related Art
Computers utilize a master control program known as an operating system. The computer loads the operating system first when the computer is turned on. The operating system sets the standards for all programs that run in the computer. Programs communicate with the operating system for all user interfaces and file management operations. A program is a set of files that make up computer software that is used by an end user. Programs may include, for example, generic productivity software, such as spreadsheets, word processors, and database programs, and specialized software, such as e-mail, web browser, payroll, and accounting programs.
Programs consist of instructions and programming statements known as source code, which is written by a developer. Open source refers to software created by a development community rather than a single commercial vendor. Typically, volunteers from many organizations develop the source code of open source software, which is free and available to anyone who would like to use the software or modify the software for their own purposes. This allows an organization to add a feature itself rather than hope that the vendor of a proprietary product will implement its suggestion in a subsequent release.
Although open source software is technically free, many companies sell a distribution version of an open source operating system or application for a fee. The distribution combines the free source code along with proprietary development utilities and a technical support package.
Open source developers claim that a broad group of programmers produce a more useful and more bug-free product. The primary reason for this claim is that other developers are constantly reviewing the source code. This constant review of the original developer's source code by other developers is a natural byproduct of open source software. Peer review of programs is an important safeguard against poorly written source code. However, developers of closed source or proprietary software programs counter by claiming, “Too many cooks spoil the broth!” Closed source developers believe that having complete control over a program's development ultimately results in a better product.
Software development requires testing of a program that has been modified in order to ensure that bugs or defects have not been introduced into the source code. When program is enhanced, testing is usually only performed on the new feature or modification. However, adding source code to a program often introduces errors in other routines, causing many of the old and stable functions to be tested along with the new ones. Regression testing is one example of software testing utilized by program developers.
A bug or defect is a persistent error in the program's source code. The defect can be corrected by re-writing the program's source code. The defect may cause the program to produce invalid output or cause the program to crash or freeze-up. The defect or problem is either insufficient logic or erroneous logic.
Developers may record defects and modifications to a program's source code in a bug tracking software program. Defect or bug tracking software is software designed to assist developers manage software development. Bug tracking software programs are designed so that any member of a program's development team can access the defect database to log bugs and make appropriate changes to the source code. The bug tracking software program maintains a record of, for example, time of original bug identification, bug description, changes/fixes applied, as well as the developer who made the entry or change. As a result, the bug tracking software program allows the program's development team to effectively keep track of their own work on the program.
However, small development teams generally manage development environments for software programs. Even if the entire software program's development team is composed of a large number of developers, a modest team usually manages each component of the software package. Consequently, that component's development team must perform any modifications or changes for that particular component of the software package. Thus, each development team is effectively isolated from other development teams. If regression testing is performed and a defect is identified in a program, the development team working on the defective program may waste valuable time re-writing the source code because an existing solution to the identified defect may already be posted on a bug tracking system by a similar but separate development team working in a parallel development effort.
Therefore, it would be advantageous to have an improved method and system for automatic identification and notification of relevant software defects and possible fixes.